#pragma once

#ifndef ABSTRACT_HEADER_FILE_READER
#define ABSTRACT_HEADER_FILE_READER

/*! \file AbstractSourceFileReader.h
	\brief Header file for AbstractSourceFileReader class.
	
	Details.
*/

#include <vector>
#include <string>

#include "FileInfo.h"

namespace analyzer {

	//! This class is used for represents a source file reader.
	class AbstractSourceFileReader
	{
	public:
		/*! \fn AbstractSourceFileReader(void)
			\brief Constructor of class AbstractSourceFileReader
		*/
		AbstractSourceFileReader(void);
		
		/*! \fn virtual ~AbstractSourceFileReader(void)
			\brief Destructor of class AbstractSourceFileReader.
		*/		
		virtual ~AbstractSourceFileReader(void);

		/*! \fn virtual std::vector<std::string> readFileImports(const FileInfo& fileInfo) =0
			\brief Reads all includes (names included files) into file specyfic by fileInfo.
			\param fileInfo Sets the object FileInfo which define of file on file system.
			\return Vector of strings containing the names of included files
		*/
		virtual std::vector<std::string> readFileImports(const FileInfo& fileInfo) =0;
	};
}

#endif // ABSTRACT_HEADER_FILE_READER

